const axios = require('axios');

// 配置
const BASE_URL = 'http://localhost:3000/api';
const TOKEN = 'your_jwt_token_here'; // 替换为实际的JWT token

// 测试VIP套餐列表
async function testGetVipPackages() {
  try {
    console.log('🔍 获取VIP套餐列表...');
    const response = await axios.get(`${BASE_URL}/vip/packages`);
    console.log('✅ VIP套餐列表:', JSON.stringify(response.data, null, 2));
    return response.data;
  } catch (error) {
    console.error('❌ 获取VIP套餐失败:', error.response?.data || error.message);
  }
}

// 测试购买VIP
async function testPurchaseVip(packageId = 1) {
  try {
    console.log(`🛒 购买VIP套餐 ${packageId}...`);
    const response = await axios.post(`${BASE_URL}/vip/purchase`, {
      packageId: packageId,
      paymentMethod: 'MOMO'
    }, {
      headers: {
        'Authorization': `Bearer ${TOKEN}`,
        'Content-Type': 'application/json'
      }
    });
    console.log('✅ 购买VIP成功:', JSON.stringify(response.data, null, 2));
    return response.data;
  } catch (error) {
    console.error('❌ 购买VIP失败:', error.response?.data || error.message);
  }
}

// 测试获取VIP信息
async function testGetVipInfo() {
  try {
    console.log('👤 获取VIP信息...');
    const response = await axios.get(`${BASE_URL}/vip/info`, {
      headers: {
        'Authorization': `Bearer ${TOKEN}`
      }
    });
    console.log('✅ VIP信息:', JSON.stringify(response.data, null, 2));
    return response.data;
  } catch (error) {
    console.error('❌ 获取VIP信息失败:', error.response?.data || error.message);
  }
}

// 测试获取积分套餐列表
async function testGetPointsPackages() {
  try {
    console.log('🔍 获取积分套餐列表...');
    const response = await axios.get(`${BASE_URL}/vip/points/packages`);
    console.log('✅ 积分套餐列表:', JSON.stringify(response.data, null, 2));
    return response.data;
  } catch (error) {
    console.error('❌ 获取积分套餐失败:', error.response?.data || error.message);
  }
}

// 测试获取推荐积分套餐
async function testGetRecommendedPointsPackages() {
  try {
    console.log('⭐ 获取推荐积分套餐...');
    const response = await axios.get(`${BASE_URL}/vip/points/packages/recommended`);
    console.log('✅ 推荐积分套餐:', JSON.stringify(response.data, null, 2));
    return response.data;
  } catch (error) {
    console.error('❌ 获取推荐积分套餐失败:', error.response?.data || error.message);
  }
}

// 测试获取积分套餐统计信息
async function testGetPointsPackagesStats() {
  try {
    console.log('📊 获取积分套餐统计信息...');
    const response = await axios.get(`${BASE_URL}/vip/points/packages/stats`);
    console.log('✅ 积分套餐统计:', JSON.stringify(response.data, null, 2));
    return response.data;
  } catch (error) {
    console.error('❌ 获取积分套餐统计失败:', error.response?.data || error.message);
  }
}

// 测试获取积分余额
async function testGetPointsBalance() {
  try {
    console.log('💰 获取积分余额...');
    const response = await axios.get(`${BASE_URL}/vip/points/balance`, {
      headers: {
        'Authorization': `Bearer ${TOKEN}`
      }
    });
    console.log('✅ 积分余额:', JSON.stringify(response.data, null, 2));
    return response.data;
  } catch (error) {
    console.error('❌ 获取积分余额失败:', error.response?.data || error.message);
  }
}

// 测试用户签到
async function testSignIn() {
  try {
    console.log('📝 用户签到...');
    const response = await axios.post(`${BASE_URL}/vip/signin`, {}, {
      headers: {
        'Authorization': `Bearer ${TOKEN}`
      }
    });
    console.log('✅ 签到成功:', JSON.stringify(response.data, null, 2));
    return response.data;
  } catch (error) {
    console.error('❌ 签到失败:', error.response?.data || error.message);
  }
}

// 测试获取签到记录列表
async function testGetSignInList() {
  try {
    console.log('📋 获取签到记录列表...');
    const response = await axios.get(`${BASE_URL}/vip/signin/list`, {
      headers: {
        'Authorization': `Bearer ${TOKEN}`
      }
    });
    console.log('✅ 签到记录列表:', JSON.stringify(response.data, null, 2));
    return response.data;
  } catch (error) {
    console.error('❌ 获取签到记录失败:', error.response?.data || error.message);
  }
}

// 测试获取签到状态
async function testGetSignInStatus() {
  try {
    console.log('📊 获取签到状态...');
    const response = await axios.get(`${BASE_URL}/vip/signin/status`, {
      headers: {
        'Authorization': `Bearer ${TOKEN}`
      }
    });
    console.log('✅ 签到状态:', JSON.stringify(response.data, null, 2));
    return response.data;
  } catch (error) {
    console.error('❌ 获取签到状态失败:', error.response?.data || error.message);
  }
}

// 测试购买积分
async function testPurchasePoints(packageId = 1) {
  try {
    console.log(`🛒 购买积分套餐 ${packageId}...`);
    const response = await axios.post(`${BASE_URL}/vip/points/purchase`, {
      packageId: packageId,
      paymentMethod: 'MOMO'
    }, {
      headers: {
        'Authorization': `Bearer ${TOKEN}`,
        'Content-Type': 'application/json'
      }
    });
    console.log('✅ 购买积分成功:', JSON.stringify(response.data, null, 2));
    return response.data;
  } catch (error) {
    console.error('❌ 购买积分失败:', error.response?.data || error.message);
  }
}

// 主测试函数
async function runTests() {
  console.log('🚀 开始测试VIP和积分功能...\n');

  // 1. 获取VIP套餐列表
  await testGetVipPackages();
  console.log('');

  // 2. 获取积分套餐列表
  await testGetPointsPackages();
  console.log('');

  // 3. 获取推荐积分套餐
  await testGetRecommendedPointsPackages();
  console.log('');

  // 4. 获取积分套餐统计信息
  await testGetPointsPackagesStats();
  console.log('');

  // 3. 购买VIP（需要先登录获取token）
  if (TOKEN !== 'your_jwt_token_here') {
    await testPurchaseVip(1); // 购买月度VIP
    console.log('');
  } else {
    console.log('⚠️  请先设置有效的JWT token来测试购买功能');
    console.log('');
  }

  // 4. 购买积分（需要先登录获取token）
  if (TOKEN !== 'your_jwt_token_here') {
    await testPurchasePoints(2); // 购买500积分套餐
    console.log('');
  } else {
    console.log('⚠️  请先设置有效的JWT token来测试购买功能');
    console.log('');
  }

  // 5. 获取VIP信息（需要先登录获取token）
  if (TOKEN !== 'your_jwt_token_here') {
    await testGetVipInfo();
    console.log('');

    // 6. 获取积分余额（需要先登录获取token）
    await testGetPointsBalance();
    console.log('');

    // 7. 用户签到（需要先登录获取token）
    await testSignIn();
    console.log('');

    // 8. 获取签到记录列表（需要先登录获取token）
    await testGetSignInList();
    console.log('');

    // 9. 获取签到状态（需要先登录获取token）
    await testGetSignInStatus();
    console.log('');
  }

  console.log('✨ 测试完成！');
}

// 运行测试
runTests().catch(console.error); 